home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1998 August / PC Plus SuperCD 50a Issue 142 (CD142a) (August 1998).iso / trial / demon / TURNPIKE.1 / CLASSES.ZIP / JAVA / IO / DataInputStream.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-04-14  |  3.1 KB  |  267 lines

  1. package java.io;
  2.  
  3. public class DataInputStream extends FilterInputStream implements DataInput {
  4.    private boolean isLocalised = false;
  5.    private static boolean isLocalPageDBCS = isLocalPageDBCS();
  6.    private char[] lineBuffer;
  7.  
  8.    private static native boolean isLocalPageDBCS();
  9.  
  10.    private static native boolean isLocalCharDBCSLeadByte(byte var0);
  11.  
  12.    private static native char LocalCharToJavaChar(short var0);
  13.  
  14.    private static native char[] LocalCharsToJavaChars(char[] var0, int var1, int var2);
  15.  
  16.    public DataInputStream(InputStream var1) {
  17.       super(var1);
  18.    }
  19.  
  20.    public final int read(byte[] var1) throws IOException {
  21.       return super.in.read(var1, 0, var1.length);
  22.    }
  23.  
  24.    public final int read(byte[] var1, int var2, int var3) throws IOException {
  25.       return super.in.read(var1, var2, var3);
  26.    }
  27.  
  28.    public final void readFully(byte[] var1) throws IOException {
  29.       this.readFully(var1, 0, var1.length);
  30.    }
  31.  
  32.    public final void readFully(byte[] var1, int var2, int var3) throws IOException {
  33.       InputStream var4 = super.in;
  34.  
  35.       int var6;
  36.       for(int var5 = 0; var5 < var3; var5 += var6) {
  37.          var6 = var4.read(var1, var2 + var5, var3 - var5);
  38.          if (var6 < 0) {
  39.             throw new EOFException();
  40.          }
  41.       }
  42.  
  43.    }
  44.  
  45.    public final int skipBytes(int var1) throws IOException {
  46.       InputStream var2 = super.in;
  47.  
  48.       for(int var3 = 0; var3 < var1; var3 += (int)var2.skip((long)(var1 - var3))) {
  49.       }
  50.  
  51.       return var1;
  52.    }
  53.  
  54.    public final boolean readBoolean() throws IOException {
  55.       int var1 = super.in.read();
  56.       if (var1 < 0) {
  57.          throw new EOFException();
  58.       } else {
  59.          return var1 != 0;
  60.       }
  61.    }
  62.  
  63.    public final byte readByte() throws IOException {
  64.       int var1 = super.in.read();
  65.       if (var1 < 0) {
  66.          throw new EOFException();
  67.       } else {
  68.          return (byte)var1;
  69.       }
  70.    }
  71.  
  72.    public final int readUnsignedByte() throws IOException {
  73.       int var1 = super.in.read();
  74.       if (var1 < 0) {
  75.          throw new EOFException();
  76.       } else {
  77.          return var1;
  78.       }
  79.    }
  80.  
  81.    public final short readShort() throws IOException {
  82.       InputStream var1 = super.in;
  83.       int var2 = var1.read();
  84.       int var3 = var1.read();
  85.       if ((var2 | var3) < 0) {
  86.          throw new EOFException();
  87.       } else {
  88.          return (short)((var2 << 8) + var3);
  89.       }
  90.    }
  91.  
  92.    public final int readUnsignedShort() throws IOException {
  93.       InputStream var1 = super.in;
  94.       int var2 = var1.read();
  95.       int var3 = var1.read();
  96.       if ((var2 | var3) < 0) {
  97.          throw new EOFException();
  98.       } else {
  99.          return (var2 << 8) + var3;
  100.       }
  101.    }
  102.  
  103.    public final char readChar() throws IOException {
  104.       InputStream var1 = super.in;
  105.       if (this.isLocalised) {
  106.          int var5 = var1.read();
  107.          if (var5 < 0) {
  108.             throw new EOFException();
  109.          } else {
  110.             short var4 = (short)var5;
  111.             if (isLocalPageDBCS && isLocalCharDBCSLeadByte((byte)var5)) {
  112.                if ((var5 = var1.read()) < 0) {
  113.                   throw new EOFException();
  114.                }
  115.  
  116.                var4 = (short)(var4 | var5 << 8);
  117.             }
  118.  
  119.             return LocalCharToJavaChar(var4);
  120.          }
  121.       } else {
  122.          int var2 = var1.read();
  123.          int var3 = var1.read();
  124.          if ((var2 | var3) < 0) {
  125.             throw new EOFException();
  126.          } else {
  127.             return (char)((var2 << 8) + var3);
  128.          }
  129.       }
  130.    }
  131.  
  132.    public final int readInt() throws IOException {
  133.       InputStream var1 = super.in;
  134.       int var2 = var1.read();
  135.       int var3 = var1.read();
  136.       int var4 = var1.read();
  137.       int var5 = var1.read();
  138.       if ((var2 | var3 | var4 | var5) < 0) {
  139.          throw new EOFException();
  140.       } else {
  141.          return (var2 << 24) + (var3 << 16) + (var4 << 8) + var5;
  142.       }
  143.    }
  144.  
  145.    public final long readLong() throws IOException {
  146.       return ((long)this.readInt() << 32) + ((long)this.readInt() & 4294967295L);
  147.    }
  148.  
  149.    public final float readFloat() throws IOException {
  150.       return Float.intBitsToFloat(this.readInt());
  151.    }
  152.  
  153.    public final double readDouble() throws IOException {
  154.       return Double.longBitsToDouble(((long)this.readInt() << 32) + ((long)this.readInt() & 4294967295L));
  155.    }
  156.  
  157.    public final String readLine() throws IOException {
  158.       InputStream var1 = super.in;
  159.       char[] var2 = this.lineBuffer;
  160.       if (var2 == null) {
  161.          var2 = this.lineBuffer = new char[128];
  162.       }
  163.  
  164.       int var3 = var2.length;
  165.       int var4 = 0;
  166.  
  167.       while(true) {
  168.          int var5;
  169.          switch (var5 = var1.read()) {
  170.             case 13:
  171.                int var6 = var1.read();
  172.                if (var6 != 10) {
  173.                   if (!(var1 instanceof PushbackInputStream)) {
  174.                      var1 = super.in = new PushbackInputStream(var1);
  175.                   }
  176.  
  177.                   ((PushbackInputStream)var1).unread(var6);
  178.                }
  179.             case -1:
  180.             case 10:
  181.                if (var5 == -1 && var4 == 0) {
  182.                   return null;
  183.                }
  184.  
  185.                if (this.isLocalised) {
  186.                   return new String(LocalCharsToJavaChars(var2, 0, var4));
  187.                }
  188.  
  189.                return new String(var2, 0, var4);
  190.          }
  191.  
  192.          --var3;
  193.          if (var3 < 0) {
  194.             var2 = new char[var4 + 128];
  195.             var3 = var2.length - var4 - 1;
  196.             System.arraycopy(this.lineBuffer, 0, var2, 0, var4);
  197.             this.lineBuffer = var2;
  198.          }
  199.  
  200.          var2[var4++] = (char)var5;
  201.       }
  202.    }
  203.  
  204.    public final String readUTF() throws IOException {
  205.       return readUTF(this);
  206.    }
  207.  
  208.    public static final String readUTF(DataInput var0) throws IOException {
  209.       int var1 = var0.readUnsignedShort();
  210.       char[] var2 = new char[var1];
  211.       int var3 = 0;
  212.       int var4 = 0;
  213.  
  214.       while(var3 < var1) {
  215.          int var5 = var0.readUnsignedByte();
  216.          switch (var5 >> 4) {
  217.             case 0:
  218.             case 1:
  219.             case 2:
  220.             case 3:
  221.             case 4:
  222.             case 5:
  223.             case 6:
  224.             case 7:
  225.                ++var3;
  226.                var2[var4++] = (char)var5;
  227.                break;
  228.             case 8:
  229.             case 9:
  230.             case 10:
  231.             case 11:
  232.             default:
  233.                throw new UTFDataFormatException();
  234.             case 12:
  235.             case 13:
  236.                var3 += 2;
  237.                if (var3 > var1) {
  238.                   throw new UTFDataFormatException();
  239.                }
  240.  
  241.                int var8 = var0.readUnsignedByte();
  242.                if ((var8 & 192) != 128) {
  243.                   throw new UTFDataFormatException();
  244.                }
  245.  
  246.                var2[var4++] = (char)((var5 & 31) << 6 | var8 & 63);
  247.                break;
  248.             case 14:
  249.                var3 += 3;
  250.                if (var3 > var1) {
  251.                   throw new UTFDataFormatException();
  252.                }
  253.  
  254.                int var6 = var0.readUnsignedByte();
  255.                int var7 = var0.readUnsignedByte();
  256.                if ((var6 & 192) != 128 || (var7 & 192) != 128) {
  257.                   throw new UTFDataFormatException();
  258.                }
  259.  
  260.                var2[var4++] = (char)((var5 & 15) << 12 | (var6 & 63) << 6 | var7 & 63);
  261.          }
  262.       }
  263.  
  264.       return new String(var2, 0, var4);
  265.    }
  266. }
  267.